//1.前期学习的一些疑惑
//（1）局部变量是怎么创建的
//（2）为什么局部变量的值是随机值
//（3）函数是怎样传参的，传参的顺序是怎么样的
//（4）形参和实参有什么关系
//（5）函数调用是怎么做的
//（6）函数调用结束后是怎么返回的



//2.函数调用过程中，栈帧的创建是略有差异的，具体细节取决于编译器的实现


//3.看看寄存器的知识    这节课主要讲的是esp寄存器   ebp寄存器                ----这两个寄存器的大小只有4（8）字节，和电脑的位数有关，也就是说只能存放一个函数的栈帧
//（1）这两个寄存器存放的是地址，并且这两个地址是用来维护函数栈帧的
//（2）每一次的函数调用，都要在栈区上开辟空间
//（3）接下来我们通过这个下面简单的代码来进行了解
//#include<stdio.h>
//
//int Add(int x,int y)//在调用这个Add函数的时候，esp，ebp两个寄存器就会来维护这个Add函数的栈帧   ---这两个寄存器现在存放的就是这个新空间的高地址和低地址
//{
//    int z=0;
//    z=x+y;
//    return z;
//}
//
//int main(void)        //栈区开辟的空间使用规则是  先使用高地址，再使用低地址
//首先这个函数在调用main函数的时候，会在栈区的内存上开辟一块空间。  这块空间就叫main函数的函数栈帧
//并且esp寄存器存放的是这块空间（栈帧）的低地址，ebp寄存器存放的是这块空间（栈帧）的高地址
//可以理解为esp是栈顶指针（保存低地址），ebp是栈底指针（保存高地址）
//{
//    int a=10;
//    int b=30;
//    int c=0;
//    c=Add(a,b);//调用Add函数也会为Add函数在栈区上开辟栈帧
//    printf("%d\n",c);
//}

//(4)看完这个函数的注释之后，我们要了解  ----main()函数也是被别的函数调用的   在vs2013（回去可用2019查找一下）中
//main()是被__tmainCRTStart调用的
//__tmainCRTStart是被mainCRTStartup调用的
//由上面的介绍可以知道，两个函数也会分配栈帧



//汇编中的符号的意思
//lea      eax，[a]    就是将a变量的地址放进eax寄存器中     lea就是取地址的意思

//函数形参插入栈帧时一般是从右开始。